// These are meant to be typed into the REPL. You can also run
// scala -Xnojline < repl-session.sc to run them all at once.
//setting=>user REPL Model
// val不能改变
/**
  * 第2章 Scala 基础
  * 2.1 声明值和变量
  * Scala 声明变量有两种方式， 一个用 val， 一个用 var。
  * val / var 变量名 [: 变量类型] = 变量值
  * val 定义的值是不可变的， 类似于一个常量。
  *
  * Scala REPL 默认为匿名变量分配 val。
  * var 声明的变量是可变的。
  *
  * 注： var 和 val 关键字只标识引用本身是否可以指向另一个不同的对象，
  * 它们并未表明其所引用的对象是否可变。为了减少可变性引起的 bug，
  * 应该尽可能地使用不可变变量。 变量类型可以省略， 解析器会根据值进行推断。
  * val 和 var 声明变量时都必须初始化。
  */
val answer = 8 * 5 + 2

0.5 * answer

val greeting: String = null
//answer = 0 // This will give an error


// var 能够改变
var counter = 0
counter = 1 // Ok, can change a var

// 多值声明
var i, j = 0
var greeting2, message: String = null